package com.touni.lambda;

import java.util.ArrayList;
import java.util.List;

/**
 * @ClassName : ParallelStreamDemo
 * @Description : 并行流
 * @Author : lwq
 * @Date: 2020-11-23 11:21
 */
public class ParallelStreamDemo {

    public static void main(String[] args) {



    }

    //流的相互转换
    public static void streamTransform(){
        //串行流转换为并行流,默认的线程数量即是处理器数量
        //并行流内部使用了ForkJoinPool
        baseList.stream().parallel();
        //并行流转换为串行流
        baseList.parallelStream().sequential();
        // 效率比较： 1.尽量少使用不易进行并行化操作的方法 如iterate等  以及limit、findFirst等依赖元素顺序的操作
        //           2.选择合适的数据结构  如基础类型没有包装类型的拆箱装箱的开销，拆箱装箱开销较大 ；
        //                                 以及是否便于拆分，ArrayList比LinkedList更加便于拆分
        //           3.避免使用共享变量 会导致锁同步开销
        //           4.
        //
        //
        //
    }



    static List<BaseModel> baseList;

    static {
        baseList = new ArrayList<BaseModel>();
        baseList.add(new BaseModel("刘华",26,"男"));
        baseList.add(new BaseModel("刘华",26,"男"));
        baseList.add(new BaseModel("刘已",26,"女"));
        baseList.add(new BaseModel("是啥",56,"男"));
        baseList.add(new BaseModel("自行车",16,"女"));
        baseList.add(new BaseModel("秩序册",89,"男"));
        baseList.add(new BaseModel("儿女",42,"男"));
        baseList.add(new BaseModel("瞅瞅",19,"女"));
        baseList.add(new BaseModel("分隔",52,"男"));
        baseList.add(new BaseModel("四渡赤水",46,"女"));
        //baseList.add(new BaseModel("撒旦法",41,"男"));
    }

}
